home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 July / CMCD0704.ISO / Software / Freeware / Comunicatii / htttrack / httrack-3.32-2.exe / {app} / src_win / WinHTTrack / DialogHtmlHelp.cpp < prev    next >
C/C++ Source or Header  |  2004-02-14  |  7KB  |  273 lines

  1. // DialogHtmlHelp.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Shell.h"
  6. #include "DialogHtmlHelp.h"
  7.  
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13.  
  14. extern "C" {
  15.   #include "HTTrackInterface.h"
  16.   #include "htsbase.h"
  17. };
  18.  
  19. extern HICON httrack_icon;
  20.  
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CDialogHtmlHelp dialog
  23.  
  24.  
  25. CDialogHtmlHelp::CDialogHtmlHelp(CWnd* pParent /*=NULL*/)
  26.     : CDialog(CDialogHtmlHelp::IDD, pParent)
  27. {
  28.   page="";
  29.     //{{AFX_DATA_INIT(CDialogHtmlHelp)
  30.     //}}AFX_DATA_INIT
  31. }
  32.  
  33.  
  34. void CDialogHtmlHelp::DoDataExchange(CDataExchange* pDX)
  35. {
  36.     CDialog::DoDataExchange(pDX);
  37.     //{{AFX_DATA_MAP(CDialogHtmlHelp)
  38.     //}}AFX_DATA_MAP
  39. }
  40.  
  41.  
  42. BEGIN_MESSAGE_MAP(CDialogHtmlHelp, CDialog)
  43.     //{{AFX_MSG_MAP(CDialogHtmlHelp)
  44.     ON_WM_SIZE()
  45.     ON_WM_CREATE()
  46.     ON_BN_CLICKED(IDC_BACK, OnBack)
  47.     ON_BN_CLICKED(IDC_FORWARD, OnForward)
  48.     ON_BN_CLICKED(IDC_STOP, OnStop)
  49.     ON_BN_CLICKED(IDC_RELOAD, OnReload)
  50.     ON_BN_CLICKED(IDC_HOME, OnHome)
  51.     ON_BN_CLICKED(ID_FILE_PRINT, OnFilePrint)
  52.     ON_WM_CLOSE()
  53.     //}}AFX_MSG_MAP
  54.   ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  55.   ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  56.   ON_COMMAND(ID_HELP,OnHelpInfo2)
  57.     ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  58.     ON_COMMAND(ID_BUTTON_HOME,OnHome)
  59. END_MESSAGE_MAP()
  60.  
  61. /////////////////////////////////////////////////////////////////////////////
  62. // CDialogHtmlHelp message handlers
  63.  
  64. BOOL CDialogHtmlHelp::OnInitDialog() 
  65. {
  66.     CDialog::OnInitDialog();
  67.   SetIcon(httrack_icon,false);
  68.   SetIcon(httrack_icon,true);
  69.   EnableToolTips(true);     // TOOL TIPS
  70.   SetForegroundWindow();   // yop en premier plan!
  71.  
  72.   strcpybuff(home,"file://");
  73.   {
  74.     char* a=home+strlen(home);
  75.     strcatbuff(home,AfxGetApp()->m_pszHelpFilePath);
  76.     a = home + strlen(home) -1;
  77.     while( (*a!='\\') && ((int) a > (int) home) ) a--;
  78.     if (*a=='\\') {
  79.       *(a+1)='\0';
  80.     }
  81.     strcatbuff(home,"html\\");
  82.     strcpybuff(home_dir,home);
  83.     strcatbuff(home,"index.html");
  84.   }
  85.  
  86.   // crΘer
  87.   if (m_page.CreateFromStatic(IDC_HTMLVIEW, this)) {
  88.     m_page.SetToolBar(false);
  89.     m_page.SetMenuBar(false);
  90.     m_page.SetStatusBar(false);
  91.     m_page.SetRegisterAsBrowser(false);
  92.     m_page.SetFullScreen(false);
  93.     if (page.GetLength()==0)
  94.       OnHome();
  95.     else
  96.       Go(page);
  97.     UpdateWindow();
  98.   } else {
  99.     EndDialog(IDCANCEL);
  100.     if (!ShellExecute(NULL,"open",home+strlen("file://"),"","",SW_RESTORE))
  101.       AfxMessageBox(LANG(LANG_DIAL1));
  102.   }
  103.   return TRUE;  
  104. }
  105.  
  106. // Resize
  107. void CDialogHtmlHelp::OnSize(UINT nType, int cx, int cy) 
  108. {
  109.   CDialog::OnSize(nType, cx, cy);
  110.  
  111.   HWND ip = ::GetDlgItem(this->m_hWnd,IDC_HTMLVIEW);
  112.   if (ip) {
  113.     int w,h;
  114.     RECT rect;
  115.     ::GetWindowRect(ip,&rect);
  116.     // screen coord -> client coord
  117.     POINT a,b;
  118.     a.x=rect.left; a.y=rect.top; b.x=rect.right; b.y=rect.bottom;
  119.     ::ScreenToClient(this->m_hWnd,&a); ::ScreenToClient(this->m_hWnd,&b);
  120.     rect.left=a.x; rect.top=a.y; rect.right=b.x; rect.bottom=b.y;
  121.     w = max(cx - rect.left,320);
  122.     h = max(cy - rect.top,200);
  123.     ::SetWindowPos(ip,NULL,0,0,w,h,SWP_NOZORDER|SWP_NOMOVE|SWP_NOOWNERZORDER);
  124.     //base.OnSizeCallback(this,nType,cx,cy);
  125.   }
  126. }
  127.  
  128. int CDialogHtmlHelp::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  129. {
  130.     if (CDialog::OnCreate(lpCreateStruct) == -1)
  131.         return -1;
  132.  
  133.   /*
  134.   if (!m_wndToolBar.Create(this))
  135.         return -1;      // fail to create
  136.   if (!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  137.         return -1;      // fail to create
  138.  
  139.   // TODO: Remove this if you don't want tool tips or a resizeable toolbar
  140.     m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
  141.         CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  142.   */
  143.     
  144.     return 0;
  145. }
  146.  
  147. // help de l'help..
  148. // Appel aide
  149. void CDialogHtmlHelp::OnHelpInfo2() {
  150.   (void)OnHelpInfo(NULL);
  151. }
  152.  
  153. BOOL CDialogHtmlHelp::OnHelpInfo(HELPINFO* dummy) 
  154. {
  155.   return true;
  156. }
  157.  
  158.  
  159. // Home
  160. void CDialogHtmlHelp::OnHome() {
  161.   m_page.Navigate2(home);
  162.   m_page.ShowWindow(SW_SHOW);
  163.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  164. }
  165.  
  166. void CDialogHtmlHelp::Go(CString st) {
  167.   if (st.Left(7)!="http://") {
  168.     char tempo[1024];
  169.     strcpybuff(tempo,home_dir);
  170.     strcatbuff(tempo,st);
  171.     m_page.Navigate2(tempo);
  172.   } else
  173.     m_page.Navigate2(st);
  174.   m_page.ShowWindow(SW_SHOW);
  175.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  176. }
  177.  
  178. void CDialogHtmlHelp::OnBack() 
  179. {
  180.   m_page.GoBack();
  181.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  182. }
  183.  
  184. void CDialogHtmlHelp::OnForward() 
  185. {
  186.   m_page.GoForward();
  187.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  188. }
  189.  
  190. void CDialogHtmlHelp::OnStop() 
  191. {
  192.   m_page.Stop();
  193.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  194. }
  195.  
  196. void CDialogHtmlHelp::OnReload() 
  197. {
  198.   m_page.Refresh();
  199.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  200. }
  201.  
  202. void CDialogHtmlHelp::OnFilePrint() 
  203. {
  204.   this->GetDlgItem(IDC_HTMLVIEW)->SendMessage(WM_COMMAND,ID_FILE_PRINT,NULL);
  205.   this->GetDlgItem(IDC_HTMLVIEW)->SetFocus();
  206. }
  207.  
  208.  
  209. // ------------------------------------------------------------
  210. // TOOL TIPS
  211. //
  212. // ajouter dans le .cpp:
  213. // remplacer les deux Wid1:: par le nom de la classe::
  214. // dans la message map, ajouter
  215. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  216. // dans initdialog ajouter
  217. // EnableToolTips(true);     // TOOL TIPS
  218. //
  219. // ajouter dans le .h:
  220. // char* GetTip(int id);
  221. // et en generated message map
  222. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  223. BOOL CDialogHtmlHelp::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  224. {
  225.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  226.   UINT nID =pNMHDR->idFrom;
  227.   if (pTTT->uFlags & TTF_IDISHWND)
  228.   {
  229.     // idFrom is actually the HWND of the tool
  230.     nID = ::GetDlgCtrlID((HWND)nID);
  231.     if(nID)
  232.     {
  233.       char* st=GetTip(nID);
  234.       if (st != "") {
  235.         pTTT->lpszText = st;
  236.         pTTT->hinst = AfxGetResourceHandle();
  237.         return(TRUE);
  238.       }
  239.     }
  240.   }
  241.   return(FALSE);
  242. }
  243. char* CDialogHtmlHelp::GetTip(int ID)
  244. {
  245.   switch(ID) {
  246.     case IDCANCEL:   return LANG(LANG_B3); /*"Cancel","Annuler");*/ break;
  247.     case IDOK:       return LANG(LANG_B4); /*"Add this filter","Ajouter cette rΦgle");*/ break;
  248.   }
  249.   return "";
  250. }
  251. // TOOL TIPS
  252. // ------------------------------------------------------------
  253.  
  254.  
  255. BOOL CDialogHtmlHelp::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
  256. {
  257.     // TODO: Add your specialized code here and/or call the base class
  258.  
  259.   dwStyle|=(WS_OVERLAPPEDWINDOW);
  260.   dwStyle&=~(WS_CHILD);
  261.   pParentWnd=NULL;
  262.     return CDialog::Create(IDD, pParentWnd);
  263.   //ModifyStyleEx(WS_EX_TOPMOST,0);
  264.   //SetWindowPos(&wndBottom,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
  265. }
  266.  
  267. /* Auto-destruction! */
  268. void CDialogHtmlHelp::OnClose() 
  269. {
  270.     ///CDialog::OnClose();
  271.     int r=CDialog::DestroyWindow();
  272. }
  273.